package com.hyt.it.ogt.ykcj.domain.zs.vo;

import cn.hutool.core.date.DatePattern;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.hyt.core.base.BaseEntity;
import com.hyt.it.ogt.ykcj.common.annotation.zs.TemplateMapper;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDateTime;
import java.util.Date;
import java.util.Map;

/**
 * @Description:
 * @Author: STARF
 * @CreateDate: 2022/06/24 11:19
 **/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@ApiModel(value = "考生证书信息", description = "考生证书信息")
@JsonIgnoreProperties(ignoreUnknown = true)
public class ZsExamineeInfoVO extends BaseEntity {

    /**
     * 
     */
    private static final long serialVersionUID = -8541336187720363305L;

    @ApiModelProperty(value = "id")
    private String id;

    @ApiModelProperty(value = "ZsInfo表id")
    private String zsId;

    @ApiModelProperty(value = "考生姓名")
    @TemplateMapper(templateCode = "NAME")
    private String examineeName;

    @ApiModelProperty(value = "考生性别")
    private String examineeSex;

    @ApiModelProperty(value = "考生照片")
    @TemplateMapper(templateCode = "HEAD_PHOTO")
    private String examineePhoto;

    @ApiModelProperty(value = "证件类型：1-大陆居民身份证，2-港澳台身份证，3-护照")
    private String identificationType;

    @ApiModelProperty(value = "证件类型描述")
    @TemplateMapper(templateCode = "ID_TYPE")
    private String identificationTypeDesc;

    @ApiModelProperty(value = "证件号码")
    @TemplateMapper(templateCode = "ID_NO")
    private String identificationNo;

    @ApiModelProperty(value = "准考证号")
    @TemplateMapper(templateCode = "ADMISSION_NO")
    private String admissionNo;

    @ApiModelProperty(value = "证书专业")
    private String certificateSubject;

    @ApiModelProperty(value = "证书专业名称")
    @TemplateMapper(templateCode = "OCCUPATION")
    private String certificateSubjectName;

    @ApiModelProperty(value = "证书类型")
    private String certificateType;

    @ApiModelProperty(value = "证书级别")
    private String certificateLevel;

    @ApiModelProperty(value = "证书级别描述")
    @TemplateMapper(templateCode = "LEVEL")
    private String certificateLevelDesc;

    @ApiModelProperty(value = "证书编号")
    @TemplateMapper(templateCode = "CERTIFICATE_NO")
    private String certificateSerialNumber;

    @ApiModelProperty(value = "考生证书图片存放地址")
    private String certificateImgUrl;

    @ApiModelProperty(value = "考生证书pdf存放地址")
    private String certificatePdfUrl;

    @DateTimeFormat(pattern = DatePattern.NORM_DATE_PATTERN)
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DatePattern.NORM_DATE_PATTERN, timezone = "GMT+8")
    @ApiModelProperty(value = "发证日期")
    @TemplateMapper(templateCode = "ISSUE_DATE")
    private Date certificateIssueData;

    @DateTimeFormat(pattern = DatePattern.NORM_DATE_PATTERN)
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DatePattern.NORM_DATE_PATTERN, timezone = "GMT+8")
    @ApiModelProperty(value = "证书有效期开始时间")
    private Date certificateValidityStart;

    @DateTimeFormat(pattern = DatePattern.NORM_DATE_PATTERN)
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DatePattern.NORM_DATE_PATTERN, timezone = "GMT+8")
    @ApiModelProperty(value = "证书有效期结束时间")
    private Date certificateValidityEnd;

    @ApiModelProperty(value = "证书有效期描述")
    @TemplateMapper(templateCode = "CERTIFICATE_TIME_LIMIT")
    private String certificateValidityDesc;

    @ApiModelProperty(value = "证书发放状态：1-已发放，2-未发放")
    private String certificateProvideStatus;

    @ApiModelProperty(value = "证书发放状态描述")
    @TemplateMapper(templateCode = "CERTIFICATE_PROVIDE_STATUS")
    private String certificateProvideStatusDesc;

    /**
     * 开考开始日期
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DatePattern.NORM_DATETIME_PATTERN, timezone = "GMT+8")
    @ApiModelProperty(value = "开考开始日期")
    private LocalDateTime examStartDay;

    /**
     * 开考结束日期
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DatePattern.NORM_DATETIME_PATTERN, timezone = "GMT+8")
    @ApiModelProperty(value = "开考结束日期")
    private LocalDateTime examEndDay;
    
    @ApiModelProperty(value = "考试id")
    private String examId;

    @ApiModelProperty(value = "考试名称")
    private String examName;

    @TemplateMapper(templateCode = "SEX")
    @ApiModelProperty(value = "考生性别描述")
    private String examineeSexDesc;

    @ApiModelProperty(value = "列表渲染参数")
    private Map<String, String> showViewTemplateValue;
}
